summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.java
blob: 58ccf31b7578dff8251304e8012f00535ae1b1e1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package org.yuzu.yuzu_emu.features.settings.ui;

import android.content.IntentFilter;

import org.yuzu.yuzu_emu.features.settings.model.Settings;
import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver;

/**
 * Abstraction for the Activity that manages SettingsFragments.
 */
public interface SettingsActivityView {
    /**
     * Show a new SettingsFragment.
     *
     * @param menuTag    Identifier for the settings group that should be displayed.
     * @param addToStack Whether or not this fragment should replace a previous one.
     */
    void showSettingsFragment(String menuTag, boolean addToStack, String gameId);

    /**
     * Called by a contained Fragment to get access to the Setting HashMap
     * loaded from disk, so that each Fragment doesn't need to perform its own
     * read operation.
     *
     * @return A possibly null HashMap of Settings.
     */
    Settings getSettings();

    /**
     * Used to provide the Activity with Settings HashMaps if a Fragment already
     * has one; for example, if a rotation occurs, the Fragment will not be killed,
     * but the Activity will, so the Activity needs to have its HashMaps resupplied.
     *
     * @param settings The ArrayList of all the Settings HashMaps.
     */
    void setSettings(Settings settings);

    /**
     * Called when an asynchronous load operation completes.
     *
     * @param settings The (possibly null) result of the ini load operation.
     */
    void onSettingsFileLoaded(Settings settings);

    /**
     * Called when an asynchronous load operation fails.
     */
    void onSettingsFileNotFound();

    /**
     * Display a popup text message on screen.
     *
     * @param message The contents of the onscreen message.
     * @param is_long Whether this should be a long Toast or short one.
     */
    void showToastMessage(String message, boolean is_long);

    /**
     * End the activity.
     */
    void finish();

    /**
     * Called by a containing Fragment to tell the Activity that a setting was changed;
     * unless this has been called, the Activity will not save to disk.
     */
    void onSettingChanged();

    /**
     * Show loading dialog while loading the settings
     */
    void showLoading();

    /**
     * Hide the loading the dialog
     */
    void hideLoading();

    /**
     * Show a hint to the user that the app needs the external storage to be mounted
     */
    void showExternalStorageNotMountedHint();

    /**
     * Start the DirectoryInitialization and listen for the result.
     *
     * @param receiver the broadcast receiver for the DirectoryInitialization
     * @param filter   the Intent broadcasts to be received.
     */
    void startDirectoryInitializationService(DirectoryStateReceiver receiver, IntentFilter filter);

    /**
     * Stop listening to the DirectoryInitialization.
     *
     * @param receiver The broadcast receiver to unregister.
     */
    void stopListeningToDirectoryInitializationService(DirectoryStateReceiver receiver);
}